// 1. 由于lowestCommonAncestor(root, p, q) 的功能是找出以 root 为根节点的两个节点 p q 的最近
// 公共祖先，我们考虑：
// 1. 如果 p q 分别是 root 的左右节点，那么 root 就是我们要找的最近公共祖先
// 2. 如果 root 是 None，说明我们在这条寻址路线上没有找到，我们返回 None 表示没找到
// 3. 我们继续在左右子树执行相同的逻辑
// 如果左子树没找到，说明在右子树
// 如果右子树没找到，说明在左子树
// 如果左子树和右子树分别找到一个，我们返回 root

var lowestCommonAncestor = function (root, p, q) {
  if (!root || root === p || root === q) return root;
  let left = lowestCommonAncestor(root.left, p, q);
  let right = lowestCommonAncestor(root.right, p, q);
  if (!left) return right;
  if (!right) return left;
  return root;
}